
"""
打分系统
"""
from utils.config import Config
import math

class GiveScoreSys(object):

    @staticmethod
    def sigmoid(x):
        return 1 / (1 + math.exp(-x))

    @staticmethod
    def calculate_add_score(base_score,standard_score,user_credit):
        """点赞打分 计算实际的新的分数 这是一个加分的操作

        Args:
            base_score (float): 现在的分数
            standard_score (float): 该操作的标准得分
            user_credit (float): 用户积分

        Returns:
            float: 新的分数
        """
        x = (standard_score*user_credit-Config.BALANCE_POINT_SCORE) / Config.SCORE_INCREASE
        
        score_increase = GiveScoreSys.sigmoid(x)
        
        new_score = base_score + (Config.MAX_SCORE - base_score) * score_increase
        
        return new_score
    
    @staticmethod
    def calculate_decrease_score(base_score,standard_score,user_credit):
        """ 点踩 减分的操作

        Args:
            base_score (float): 现在的分数
            standard_score (float): 该操作的标准得分
            user_credit (float): 用户余额（能量）

        Returns:
            float: 新的分数
        """
        x = (standard_score*user_credit-Config.BALANCE_POINT_SCORE) / Config.SCORE_INCREASE
        
        score_increase = GiveScoreSys.sigmoid(x)
        
        new_score = base_score  - base_score * score_increase
        
        return new_score